---

permalink: /recurring/

title: Recurring Summer Schools
summary: Machine Learning related summer schools that happen recurringly.
author: awesome-mlss
---

<html>
    <head>
        {% include head.html %}
        <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8115933863612298"
         crossorigin="anonymous"></script>
    </head>
    {% include gtag.html %}
  <body>
    {% include header.html %}
    <div class="container">
        <div class="page-header">
            <div class="row">
                <div class="col-12">
                    <div style="background-color: #f7f7f7; padding: 20px; border-radius: 5px;">
                        <h2 style="font-size: 2em; text-align: left; width: 100%;">
                            {{ site.title }}
                        </h2>
                        <p style="font-size: 1.5em;">
                          {{ site.description }}
                        </p>
                        <div class="row">
                            <div style="text-align: left; font-weight: lighter;" class="col-12 col-md-8">
                              <span class="local-timezone-hide">
                                This community tool serves as a central repository for deadlines of calls for participation at summer schools in machine learning and other closely related fields.
                                <br>
                                <br>
                                The dates are made available as countdowns, in local timezones and even as a Google calendar below!
                                <br>
                                <br>
                                Deadlines are shown in <span class="local-timezone">America/New_York</span> time.
                                To view them in conference website timezones, click on them.
                              </span>
                            </div>
                            <div class="col-12 col-md-4">
                                <div class="d-flex justify-content-end">
                                    <a href="https://calendar.google.com/calendar/r?cid={{ site.domain }}/mlss-deadlines.ics" class="btn btn-outline-danger mx-1">
                                        <i class="fa fa-google" aria-hidden="true"></i> Add to Google Calendar
                                    </a>
                                    <a href="/mlss-deadlines.ics" class="btn btn-outline-primary mx-1">
                                        <i class="fa fa-calendar-plus-o" aria-hidden="true"></i> Get the iCal
                                    </a>
                                    <a target="_blank" href="//github.com/{{ site.github_username }}/{{ site.github_repo }}" class="btn btn-outline-dark mx-1">
                                        Contribute a school on Github
                                    </a>
                                </div>
                                <hr>
                                <div class="d-flex justify-content-end">
                                  <form class="container">
                                      <div class="row">
                                          <div class="col-12"> <!-- Ensure full width for mobile, will stack automatically -->
                                              <div class="filter-label" style="text-align: left;">
                                                  <label for="subject-select" style="margin-bottom: 10px; line-height: 1.5;">
                                                      Filter by topic:
                                                  </label>
                                              </div>
                                          </div>
                                          <div class="col-12"> <!-- Select dropdown in a new row but aligned in the same column grid -->
                                              <select id="subject-select" name="subject-select" multiple="multiple">
                                                  {% for type in site.data.types %}
                                                  <option value="{{type.sub}}" id="{{type.sub}}-checkbox">
                                                      {{type.name}} ({{type.sub}})
                                                  </option>
                                                  {% endfor %}
                                              </select>
                                          </div>
                                      </div>
                                  </form>
                              </div>                                                            
                        </div>
                    </div>
                </div>
            </div>
            <br>
        </div>
        <div id="confs">
        <div id="past_confs">
          {% assign confs = site.data.summerschools | concat: site.data.archive | sort: "year" | reverse | group_by: "title" | sort: "name" %}
          {% assign this_time = "now" | date: "%s" %}
          {% for conf in confs %}
          {% if conf.items.size > 1 %}
          <div id="{{conf.name | slugify: 'latin'}}" class="ConfItem">
            <div class="row conf-row">
                <div class="col-12">
                  <span class="conf-title">
                      <a title="Deadline Details" href="{{site.baseurl}}/recurringschool/{{conf.name | slugify: 'latin'}}/">{{conf.name}}</a>
                  </span>
                  <span class="conf-title-small">
                      <a title="Deadline Details" href="{{site.baseurl}}/recurringschool/{{conf.name | slugify: 'latin'}}/">{{conf.name}}</a>
                  </span>
                  <span class="conf-title-icon">
                    <a title="Conference Website" href="{{conf.items[0].link}}" target="_blank"><img src="/static/img/203-earth.svg" class="badge-link" alt="Link to Conference Website" width="16" height="16" /></a>
                    &ZeroWidthSpace;
                  </span>
                </div>
            </div>
            <div class="row">
              {% assign conf_time = conf.items[0].start | date: "%s" %}
              {% if this_time < conf_time %}
                {% assign lastnext_place = "Next" %}
                {% assign lastnext_year = "Next Year Held in" %}
              {% else %}
                {% assign lastnext_place = "Last" %}
                {% assign lastnext_year = "Last Year Held in" %}
              {% endif %}
              <div class="col-12 col-sm-6">
                <div class="meta">
                  <span class="conf-place">
                    {% assign last_place = conf.items[0].place %}
                    {% if last_place == conf.items[2].place and last_place == conf.items[1].place %}
                      Always:&nbsp;
                    {% else %}
                      {{ lastnext_place }}:&nbsp;
                    {% endif %}
                    {% assign idx = 0 %}
                    {% if last_place == "TBD" %}
                      {% assign idx = 1 %}
                    {% endif %}
                    {% if conf.items[idx].place == "Online" %}
                    <a href="#">{{conf.items[idx].place}}</a>
                    {% else %}
                    <a href="http://maps.google.com/?q={{conf.items[idx].place}}">{{conf.items[idx].place}}</a>
                    {% endif %}
                  </span>
                  <br>
                  <span class="conf-time">
                    {{ lastnext_year }} {{ conf.items[0].year }}.
                  </span>
                </div>
              </div>
            </div>
            <div class="row">
                <div class="col-12">
                    {% assign subs = conf.items[0].sub %}
                    {% for sub in subs %}
                    <span title="Click to only show {{sub}} conferences" data-sub="{{sub}}" class="conf-sub {{sub}}-tag"></span>
                    {% endfor %}
                </div>
            </div> 
            <hr>
          </div>
          {% endif %}
          {% endfor %}
        </div>
      </div>
      <footer>
            {% include footer.html %}
      </footer>
      <br><br>
    </div>
    <script type="text/javascript" charset="utf-8">
    $(function() {

        {% include load_data.js %}

        // Due to the difference in HTML structure, we use a separate function to update the filtering for recurring.html
        function update_filtering(data) {
            var page_url = "{{site.baseurl}}";
            var currentPath = window.location.pathname; 
            currentPath = currentPath.replace(/\/+$/, '/');
            store.set("{{site.domain}}-subs", data.subs);

            $(".ConfItem").hide(); // Ensure class names are correctly cased
            for (const sub of data.all_subs) {
                if (data.subs.includes(sub)) {
                $('.' + sub + '-tag').closest('.ConfItem').show(); // Adjust based on your actual class setup
                }
            }

            if (data.subs.length === 0) {
                window.history.pushState("", "", currentPath);
            } else {
                window.history.pushState("", "", currentPath + "?sub=" + data.subs.join(','));
            }
        }

        {% include multiselect_handler.js %}
        
        $('.conf-sub').each(function() {
            var sub = $(this).data('sub'); // Get the data-sub attribute which stores the sub
            $(this).html(sub2name[sub].toLocaleLowerCase()); // Update the HTML content
        });
        
        // Event handler on sub badge click
        $('.conf-sub').click(function (e) {
            var csub = $(this).data('sub');
            subs = [csub];
            $("#subject-select").multiselect('deselect', all_subs);
            $("#subject-select").multiselect('select', subs);
            update_filtering({ subs: subs, all_subs: all_subs});
        });

    });
    </script>
  </body>
</html>